CLASIFICACIÓN DE ENFERMEDADES DE CACAO

Author

Diego Guanotasig - Jorge Delgado

Published

December 9, 2025

TRABAJO FINAL

Librerias

Code
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications import EfficientNetB0, MobileNetV2
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt
import numpy as np
import os
Code
BASE_DIR = "G:\Mi unidad\Colab Notebooks\AProfundo\clasificacion_dataset/"
IMG_SIZE = (224, 224)
BATCH = 32
<>:1: SyntaxWarning: invalid escape sequence '\M'
<>:1: SyntaxWarning: invalid escape sequence '\M'
C:\Users\Dieg0AkD\AppData\Local\Temp\ipykernel_21372\1521194072.py:1: SyntaxWarning: invalid escape sequence '\M'
  BASE_DIR = "G:\Mi unidad\Colab Notebooks\AProfundo\clasificacion_dataset/"
Code
train_gen = ImageDataGenerator(rescale=1/255)
val_gen   = ImageDataGenerator(rescale=1/255)

train_ds = train_gen.flow_from_directory(
    BASE_DIR+"train",
    target_size=IMG_SIZE,
    batch_size=BATCH,
    class_mode="categorical"
)

val_ds = val_gen.flow_from_directory(
    BASE_DIR+"val",
    target_size=IMG_SIZE,
    batch_size=BATCH,
    class_mode="categorical"
)

num_classes = len(train_ds.class_indices)
Found 234 images belonging to 3 classes.
Found 47 images belonging to 3 classes.
Code
import matplotlib.pyplot as plt

# Mostrar 5 imágenes del dataset de entrenamiento
def mostrar_5_iniciales(dataset):
    images, labels = next(dataset)  # primer batch
    plt.figure(figsize=(12, 8))

    for i in range(5):
        plt.subplot(1, 5, i+1)
        plt.imshow(images[i])
        plt.axis("off")

    plt.suptitle("Primeras 5 imágenes del dataset (train)")
    plt.show()

mostrar_5_iniciales(train_ds)

EfficientNetB0

Code
efficient_model = EfficientNetB0(
include_top=False,
input_shape=IMG_SIZE+(3,),
weights="imagenet"
)

efficient_model.trainable = False

model_e = models.Sequential([
efficient_model,
layers.GlobalAveragePooling2D(),
layers.Dense(256, activation="relu"),
layers.Dense(num_classes, activation="softmax")
])

model_e.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)

history_e = model_e.fit(train_ds, validation_data=val_ds, epochs=10)
Epoch 1/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 2:04 18s/step - accuracy: 0.3750 - loss: 1.1153

2/8 ━━━━━━━━━━━━━━━━━━━━ 32s 5s/step - accuracy: 0.3516 - loss: 1.2516  

3/8 ━━━━━━━━━━━━━━━━━━━━ 28s 6s/step - accuracy: 0.3594 - loss: 1.2565

4/8 ━━━━━━━━━━━━━━━━━━━━ 22s 6s/step - accuracy: 0.3574 - loss: 1.2527

5/8 ━━━━━━━━━━━━━━━━━━━━ 17s 6s/step - accuracy: 0.3584 - loss: 1.2416

6/8 ━━━━━━━━━━━━━━━━━━━━ 11s 6s/step - accuracy: 0.3586 - loss: 1.2344

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 5s/step - accuracy: 0.3597 - loss: 1.2285 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.3607 - loss: 1.2261

8/8 ━━━━━━━━━━━━━━━━━━━━ 72s 8s/step - accuracy: 0.3675 - loss: 1.2099 - val_accuracy: 0.3404 - val_loss: 1.2243

Epoch 2/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 47s 7s/step - accuracy: 0.4062 - loss: 1.1015

2/8 ━━━━━━━━━━━━━━━━━━━━ 41s 7s/step - accuracy: 0.4062 - loss: 1.1044

3/8 ━━━━━━━━━━━━━━━━━━━━ 32s 6s/step - accuracy: 0.3993 - loss: 1.1072

4/8 ━━━━━━━━━━━━━━━━━━━━ 19s 5s/step - accuracy: 0.3915 - loss: 1.1089

5/8 ━━━━━━━━━━━━━━━━━━━━ 16s 6s/step - accuracy: 0.3871 - loss: 1.1089

6/8 ━━━━━━━━━━━━━━━━━━━━ 11s 6s/step - accuracy: 0.3804 - loss: 1.1115

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 6s/step - accuracy: 0.3777 - loss: 1.1134 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3754 - loss: 1.1151

8/8 ━━━━━━━━━━━━━━━━━━━━ 61s 8s/step - accuracy: 0.3590 - loss: 1.1268 - val_accuracy: 0.3191 - val_loss: 1.1526

Epoch 3/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 46s 7s/step - accuracy: 0.1562 - loss: 1.2461

2/8 ━━━━━━━━━━━━━━━━━━━━ 1:03 11s/step - accuracy: 0.1953 - loss: 1.2096

3/8 ━━━━━━━━━━━━━━━━━━━━ 43s 9s/step - accuracy: 0.2170 - loss: 1.1905  

4/8 ━━━━━━━━━━━━━━━━━━━━ 25s 6s/step - accuracy: 0.2241 - loss: 1.1813

5/8 ━━━━━━━━━━━━━━━━━━━━ 20s 7s/step - accuracy: 0.2314 - loss: 1.1736

6/8 ━━━━━━━━━━━━━━━━━━━━ 13s 7s/step - accuracy: 0.2380 - loss: 1.1676

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 7s/step - accuracy: 0.2429 - loss: 1.1628 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 7s/step - accuracy: 0.2488 - loss: 1.1585

8/8 ━━━━━━━━━━━━━━━━━━━━ 66s 8s/step - accuracy: 0.2906 - loss: 1.1284 - val_accuracy: 0.3404 - val_loss: 1.0979

Epoch 4/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 49s 7s/step - accuracy: 0.3125 - loss: 1.1056

2/8 ━━━━━━━━━━━━━━━━━━━━ 40s 7s/step - accuracy: 0.3359 - loss: 1.1065

3/8 ━━━━━━━━━━━━━━━━━━━━ 22s 5s/step - accuracy: 0.3366 - loss: 1.1077

4/8 ━━━━━━━━━━━━━━━━━━━━ 22s 6s/step - accuracy: 0.3326 - loss: 1.1093

5/8 ━━━━━━━━━━━━━━━━━━━━ 17s 6s/step - accuracy: 0.3299 - loss: 1.1105

6/8 ━━━━━━━━━━━━━━━━━━━━ 12s 6s/step - accuracy: 0.3249 - loss: 1.1113

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 6s/step - accuracy: 0.3237 - loss: 1.1113 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 7s/step - accuracy: 0.3255 - loss: 1.1106

8/8 ━━━━━━━━━━━━━━━━━━━━ 63s 8s/step - accuracy: 0.3376 - loss: 1.1061 - val_accuracy: 0.3404 - val_loss: 1.1047

Epoch 5/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 47s 7s/step - accuracy: 0.3438 - loss: 1.0920

2/8 ━━━━━━━━━━━━━━━━━━━━ 43s 7s/step - accuracy: 0.3359 - loss: 1.1061

3/8 ━━━━━━━━━━━━━━━━━━━━ 36s 7s/step - accuracy: 0.3385 - loss: 1.1070

4/8 ━━━━━━━━━━━━━━━━━━━━ 28s 7s/step - accuracy: 0.3340 - loss: 1.1105

5/8 ━━━━━━━━━━━━━━━━━━━━ 21s 7s/step - accuracy: 0.3284 - loss: 1.1123

6/8 ━━━━━━━━━━━━━━━━━━━━ 14s 7s/step - accuracy: 0.3258 - loss: 1.1136

7/8 ━━━━━━━━━━━━━━━━━━━━ 7s 7s/step - accuracy: 0.3232 - loss: 1.1148 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3213 - loss: 1.1155

8/8 ━━━━━━━━━━━━━━━━━━━━ 62s 8s/step - accuracy: 0.3077 - loss: 1.1205 - val_accuracy: 0.3191 - val_loss: 1.0998

Epoch 6/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 1:11 10s/step - accuracy: 0.3750 - loss: 1.0937

2/8 ━━━━━━━━━━━━━━━━━━━━ 45s 8s/step - accuracy: 0.3672 - loss: 1.0958  

3/8 ━━━━━━━━━━━━━━━━━━━━ 37s 7s/step - accuracy: 0.3628 - loss: 1.0970

4/8 ━━━━━━━━━━━━━━━━━━━━ 28s 7s/step - accuracy: 0.3542 - loss: 1.1025

5/8 ━━━━━━━━━━━━━━━━━━━━ 21s 7s/step - accuracy: 0.3508 - loss: 1.1051

6/8 ━━━━━━━━━━━━━━━━━━━━ 12s 6s/step - accuracy: 0.3482 - loss: 1.1068

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 6s/step - accuracy: 0.3466 - loss: 1.1083 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3433 - loss: 1.1115

8/8 ━━━━━━━━━━━━━━━━━━━━ 65s 8s/step - accuracy: 0.3205 - loss: 1.1336 - val_accuracy: 0.3404 - val_loss: 1.1292

Epoch 7/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 50s 7s/step - accuracy: 0.3438 - loss: 1.1459

2/8 ━━━━━━━━━━━━━━━━━━━━ 38s 6s/step - accuracy: 0.3281 - loss: 1.1426

3/8 ━━━━━━━━━━━━━━━━━━━━ 33s 7s/step - accuracy: 0.3160 - loss: 1.1429

4/8 ━━━━━━━━━━━━━━━━━━━━ 26s 7s/step - accuracy: 0.3132 - loss: 1.1408

5/8 ━━━━━━━━━━━━━━━━━━━━ 20s 7s/step - accuracy: 0.3143 - loss: 1.1383

6/8 ━━━━━━━━━━━━━━━━━━━━ 11s 6s/step - accuracy: 0.3168 - loss: 1.1360

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 6s/step - accuracy: 0.3182 - loss: 1.1350 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3185 - loss: 1.1348

8/8 ━━━━━━━━━━━━━━━━━━━━ 62s 8s/step - accuracy: 0.3205 - loss: 1.1338 - val_accuracy: 0.3404 - val_loss: 1.1134

Epoch 8/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 48s 7s/step - accuracy: 0.2188 - loss: 1.1531

2/8 ━━━━━━━━━━━━━━━━━━━━ 40s 7s/step - accuracy: 0.2734 - loss: 1.1390

3/8 ━━━━━━━━━━━━━━━━━━━━ 32s 7s/step - accuracy: 0.3038 - loss: 1.1301

4/8 ━━━━━━━━━━━━━━━━━━━━ 25s 6s/step - accuracy: 0.3158 - loss: 1.1257

5/8 ━━━━━━━━━━━━━━━━━━━━ 19s 7s/step - accuracy: 0.3276 - loss: 1.1217

6/8 ━━━━━━━━━━━━━━━━━━━━ 13s 7s/step - accuracy: 0.3303 - loss: 1.1232

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 6s/step - accuracy: 0.3312 - loss: 1.1243 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3304 - loss: 1.1264

8/8 ━━━━━━━━━━━━━━━━━━━━ 61s 8s/step - accuracy: 0.3248 - loss: 1.1408 - val_accuracy: 0.3191 - val_loss: 1.1156

Epoch 9/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 54s 8s/step - accuracy: 0.3438 - loss: 1.1082

2/8 ━━━━━━━━━━━━━━━━━━━━ 40s 7s/step - accuracy: 0.3203 - loss: 1.1158

3/8 ━━━━━━━━━━━━━━━━━━━━ 33s 7s/step - accuracy: 0.3281 - loss: 1.1146

4/8 ━━━━━━━━━━━━━━━━━━━━ 26s 7s/step - accuracy: 0.3281 - loss: 1.1145

5/8 ━━━━━━━━━━━━━━━━━━━━ 20s 7s/step - accuracy: 0.3325 - loss: 1.1140

6/8 ━━━━━━━━━━━━━━━━━━━━ 13s 7s/step - accuracy: 0.3344 - loss: 1.1162

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 6s/step - accuracy: 0.3340 - loss: 1.1184 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3344 - loss: 1.1194

8/8 ━━━━━━━━━━━━━━━━━━━━ 61s 8s/step - accuracy: 0.3376 - loss: 1.1264 - val_accuracy: 0.3404 - val_loss: 1.1013

Epoch 10/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 47s 7s/step - accuracy: 0.2812 - loss: 1.1092

2/8 ━━━━━━━━━━━━━━━━━━━━ 40s 7s/step - accuracy: 0.3047 - loss: 1.1057

3/8 ━━━━━━━━━━━━━━━━━━━━ 35s 7s/step - accuracy: 0.3108 - loss: 1.1055

4/8 ━━━━━━━━━━━━━━━━━━━━ 28s 7s/step - accuracy: 0.3112 - loss: 1.1067

5/8 ━━━━━━━━━━━━━━━━━━━━ 21s 7s/step - accuracy: 0.3177 - loss: 1.1066

6/8 ━━━━━━━━━━━━━━━━━━━━ 12s 6s/step - accuracy: 0.3226 - loss: 1.1066

7/8 ━━━━━━━━━━━━━━━━━━━━ 6s 6s/step - accuracy: 0.3253 - loss: 1.1074 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 0.3252 - loss: 1.1092

8/8 ━━━━━━━━━━━━━━━━━━━━ 60s 8s/step - accuracy: 0.3248 - loss: 1.1216 - val_accuracy: 0.3404 - val_loss: 1.1051

MobileNetV2

Code
mobile = MobileNetV2(
include_top=False,
input_shape=IMG_SIZE+(3,),
weights="imagenet"
)
mobile.trainable = False

model_m = models.Sequential([
mobile,
layers.GlobalAveragePooling2D(),
layers.Dense(256, activation="relu"),
layers.Dense(num_classes, activation="softmax")
])

model_m.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)

history_m = model_m.fit(train_ds, validation_data=val_ds, epochs=10)
Epoch 1/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 1:24 12s/step - accuracy: 0.4375 - loss: 1.0273

2/8 ━━━━━━━━━━━━━━━━━━━━ 9s 2s/step - accuracy: 0.4092 - loss: 1.1713   

3/8 ━━━━━━━━━━━━━━━━━━━━ 17s 3s/step - accuracy: 0.3854 - loss: 1.4973

4/8 ━━━━━━━━━━━━━━━━━━━━ 16s 4s/step - accuracy: 0.3787 - loss: 1.6416

5/8 ━━━━━━━━━━━━━━━━━━━━ 13s 4s/step - accuracy: 0.3740 - loss: 1.6939

6/8 ━━━━━━━━━━━━━━━━━━━━ 9s 5s/step - accuracy: 0.3754 - loss: 1.7062 

7/8 ━━━━━━━━━━━━━━━━━━━━ 4s 5s/step - accuracy: 0.3776 - loss: 1.7222

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.3806 - loss: 1.7425

8/8 ━━━━━━━━━━━━━━━━━━━━ 69s 8s/step - accuracy: 0.4017 - loss: 1.8848 - val_accuracy: 0.4681 - val_loss: 1.6960

Epoch 2/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 50s 7s/step - accuracy: 0.5312 - loss: 1.4895

2/8 ━━━━━━━━━━━━━━━━━━━━ 37s 6s/step - accuracy: 0.5547 - loss: 1.3683

3/8 ━━━━━━━━━━━━━━━━━━━━ 26s 5s/step - accuracy: 0.5608 - loss: 1.2806

4/8 ━━━━━━━━━━━━━━━━━━━━ 21s 5s/step - accuracy: 0.5768 - loss: 1.2058

5/8 ━━━━━━━━━━━━━━━━━━━━ 16s 6s/step - accuracy: 0.5827 - loss: 1.1586

6/8 ━━━━━━━━━━━━━━━━━━━━ 11s 6s/step - accuracy: 0.5837 - loss: 1.1282

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 6s/step - accuracy: 0.5807 - loss: 1.1115 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.5781 - loss: 1.0971

8/8 ━━━━━━━━━━━━━━━━━━━━ 53s 6s/step - accuracy: 0.5598 - loss: 0.9962 - val_accuracy: 0.3404 - val_loss: 1.3209

Epoch 3/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 45s 6s/step - accuracy: 0.7812 - loss: 0.5883

2/8 ━━━━━━━━━━━━━━━━━━━━ 37s 6s/step - accuracy: 0.7500 - loss: 0.6292

3/8 ━━━━━━━━━━━━━━━━━━━━ 29s 6s/step - accuracy: 0.7431 - loss: 0.6361

4/8 ━━━━━━━━━━━━━━━━━━━━ 23s 6s/step - accuracy: 0.7331 - loss: 0.6470

5/8 ━━━━━━━━━━━━━━━━━━━━ 14s 5s/step - accuracy: 0.7256 - loss: 0.6535

6/8 ━━━━━━━━━━━━━━━━━━━━ 10s 5s/step - accuracy: 0.7194 - loss: 0.6566

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 5s/step - accuracy: 0.7163 - loss: 0.6576 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.7138 - loss: 0.6582

8/8 ━━━━━━━━━━━━━━━━━━━━ 55s 7s/step - accuracy: 0.6966 - loss: 0.6625 - val_accuracy: 0.5319 - val_loss: 1.1151

Epoch 4/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 41s 6s/step - accuracy: 0.8125 - loss: 0.6181

2/8 ━━━━━━━━━━━━━━━━━━━━ 33s 6s/step - accuracy: 0.8203 - loss: 0.5820

3/8 ━━━━━━━━━━━━━━━━━━━━ 28s 6s/step - accuracy: 0.8247 - loss: 0.5635

4/8 ━━━━━━━━━━━━━━━━━━━━ 22s 6s/step - accuracy: 0.8216 - loss: 0.5552

5/8 ━━━━━━━━━━━━━━━━━━━━ 16s 5s/step - accuracy: 0.8210 - loss: 0.5504

6/8 ━━━━━━━━━━━━━━━━━━━━ 10s 5s/step - accuracy: 0.8153 - loss: 0.5505

7/8 ━━━━━━━━━━━━━━━━━━━━ 4s 5s/step - accuracy: 0.8120 - loss: 0.5499 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.8109 - loss: 0.5478

8/8 ━━━━━━━━━━━━━━━━━━━━ 49s 6s/step - accuracy: 0.8034 - loss: 0.5324 - val_accuracy: 0.5532 - val_loss: 1.0963

Epoch 5/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 38s 5s/step - accuracy: 0.9062 - loss: 0.4158

2/8 ━━━━━━━━━━━━━━━━━━━━ 10s 2s/step - accuracy: 0.8936 - loss: 0.4158

3/8 ━━━━━━━━━━━━━━━━━━━━ 18s 4s/step - accuracy: 0.8795 - loss: 0.4247

4/8 ━━━━━━━━━━━━━━━━━━━━ 17s 4s/step - accuracy: 0.8719 - loss: 0.4244

5/8 ━━━━━━━━━━━━━━━━━━━━ 13s 5s/step - accuracy: 0.8656 - loss: 0.4232

6/8 ━━━━━━━━━━━━━━━━━━━━ 9s 5s/step - accuracy: 0.8606 - loss: 0.4241 

7/8 ━━━━━━━━━━━━━━━━━━━━ 4s 5s/step - accuracy: 0.8579 - loss: 0.4229

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.8569 - loss: 0.4215

8/8 ━━━━━━━━━━━━━━━━━━━━ 50s 6s/step - accuracy: 0.8504 - loss: 0.4116 - val_accuracy: 0.4894 - val_loss: 1.1791

Epoch 6/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 50s 7s/step - accuracy: 0.8125 - loss: 0.4535

2/8 ━━━━━━━━━━━━━━━━━━━━ 34s 6s/step - accuracy: 0.8203 - loss: 0.4458

3/8 ━━━━━━━━━━━━━━━━━━━━ 18s 4s/step - accuracy: 0.8262 - loss: 0.4361

4/8 ━━━━━━━━━━━━━━━━━━━━ 17s 4s/step - accuracy: 0.8413 - loss: 0.4171

5/8 ━━━━━━━━━━━━━━━━━━━━ 13s 5s/step - accuracy: 0.8528 - loss: 0.4024

6/8 ━━━━━━━━━━━━━━━━━━━━ 9s 5s/step - accuracy: 0.8626 - loss: 0.3913 

7/8 ━━━━━━━━━━━━━━━━━━━━ 4s 5s/step - accuracy: 0.8709 - loss: 0.3814

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.8769 - loss: 0.3739

8/8 ━━━━━━━━━━━━━━━━━━━━ 50s 6s/step - accuracy: 0.9188 - loss: 0.3215 - val_accuracy: 0.5319 - val_loss: 1.2046

Epoch 7/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 13s 2s/step - accuracy: 1.0000 - loss: 0.3135

2/8 ━━━━━━━━━━━━━━━━━━━━ 32s 5s/step - accuracy: 0.9762 - loss: 0.2902

3/8 ━━━━━━━━━━━━━━━━━━━━ 26s 5s/step - accuracy: 0.9751 - loss: 0.2836

4/8 ━━━━━━━━━━━━━━━━━━━━ 21s 5s/step - accuracy: 0.9743 - loss: 0.2775

5/8 ━━━━━━━━━━━━━━━━━━━━ 16s 5s/step - accuracy: 0.9722 - loss: 0.2767

6/8 ━━━━━━━━━━━━━━━━━━━━ 10s 5s/step - accuracy: 0.9719 - loss: 0.2723

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 5s/step - accuracy: 0.9710 - loss: 0.2695 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.9698 - loss: 0.2672

8/8 ━━━━━━━━━━━━━━━━━━━━ 48s 7s/step - accuracy: 0.9615 - loss: 0.2508 - val_accuracy: 0.5106 - val_loss: 1.2346

Epoch 8/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 12s 2s/step - accuracy: 1.0000 - loss: 0.2846

2/8 ━━━━━━━━━━━━━━━━━━━━ 33s 6s/step - accuracy: 1.0000 - loss: 0.2407

3/8 ━━━━━━━━━━━━━━━━━━━━ 27s 6s/step - accuracy: 1.0000 - loss: 0.2192

4/8 ━━━━━━━━━━━━━━━━━━━━ 21s 5s/step - accuracy: 0.9976 - loss: 0.2104

5/8 ━━━━━━━━━━━━━━━━━━━━ 16s 5s/step - accuracy: 0.9952 - loss: 0.2046

6/8 ━━━━━━━━━━━━━━━━━━━━ 10s 5s/step - accuracy: 0.9921 - loss: 0.2017

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 5s/step - accuracy: 0.9897 - loss: 0.1996 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.9878 - loss: 0.1978

8/8 ━━━━━━━━━━━━━━━━━━━━ 48s 7s/step - accuracy: 0.9744 - loss: 0.1853 - val_accuracy: 0.5106 - val_loss: 1.3183

Epoch 9/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 40s 6s/step - accuracy: 1.0000 - loss: 0.1067

2/8 ━━━━━━━━━━━━━━━━━━━━ 9s 2s/step - accuracy: 1.0000 - loss: 0.1049 

3/8 ━━━━━━━━━━━━━━━━━━━━ 18s 4s/step - accuracy: 0.9955 - loss: 0.1126

4/8 ━━━━━━━━━━━━━━━━━━━━ 17s 4s/step - accuracy: 0.9919 - loss: 0.1183

5/8 ━━━━━━━━━━━━━━━━━━━━ 14s 5s/step - accuracy: 0.9892 - loss: 0.1226

6/8 ━━━━━━━━━━━━━━━━━━━━ 9s 5s/step - accuracy: 0.9880 - loss: 0.1249 

7/8 ━━━━━━━━━━━━━━━━━━━━ 4s 5s/step - accuracy: 0.9876 - loss: 0.1270

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 5s/step - accuracy: 0.9876 - loss: 0.1282

8/8 ━━━━━━━━━━━━━━━━━━━━ 49s 6s/step - accuracy: 0.9872 - loss: 0.1369 - val_accuracy: 0.5106 - val_loss: 1.3777

Epoch 10/10


1/8 ━━━━━━━━━━━━━━━━━━━━ 13s 2s/step - accuracy: 1.0000 - loss: 0.1205

2/8 ━━━━━━━━━━━━━━━━━━━━ 34s 6s/step - accuracy: 1.0000 - loss: 0.1000

3/8 ━━━━━━━━━━━━━━━━━━━━ 27s 6s/step - accuracy: 1.0000 - loss: 0.0976

4/8 ━━━━━━━━━━━━━━━━━━━━ 22s 6s/step - accuracy: 1.0000 - loss: 0.0976

5/8 ━━━━━━━━━━━━━━━━━━━━ 16s 6s/step - accuracy: 1.0000 - loss: 0.0995

6/8 ━━━━━━━━━━━━━━━━━━━━ 11s 6s/step - accuracy: 1.0000 - loss: 0.1011

7/8 ━━━━━━━━━━━━━━━━━━━━ 5s 6s/step - accuracy: 1.0000 - loss: 0.1020 

8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 6s/step - accuracy: 1.0000 - loss: 0.1030

8/8 ━━━━━━━━━━━━━━━━━━━━ 48s 7s/step - accuracy: 1.0000 - loss: 0.1102 - val_accuracy: 0.5106 - val_loss: 1.4275

Gráficas de Entrenamiento

Code
plt.plot(history_e.history['accuracy'], label="EfficientNet Acc")
plt.plot(history_m.history['accuracy'], label="MobileNet Acc")
plt.legend(); plt.title("Comparación Accuracy"); plt.show()

Predicción desde imagenes celular

Code
from tensorflow.keras.preprocessing import image
import numpy as np
import matplotlib.pyplot as plt

def predict(img_path, model):
    img = image.load_img(img_path, target_size=IMG_SIZE)
    img_array = image.img_to_array(img) / 255.0
    img_array = np.expand_dims(img_array, 0)
    
    pred = model.predict(img_array)[0]

    classes = list(train_ds.class_indices.keys())
    result = classes[np.argmax(pred)]

    # 🔹 Mostrar la imagen y la predicción
    plt.imshow(image.load_img(img_path))
    plt.title(f"Predicción: {result}")
    plt.axis("off")
    plt.show()

    return result, pred


img_path = r"G:\Mi unidad\Colab Notebooks\AProfundo\clasificacion_dataset\test\monilia\Monilia101.jpg"
print(predict(img_path, model_m))
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 2s/step

1/1 ━━━━━━━━━━━━━━━━━━━━ 2s 2s/step

('monilia', array([2.3191734e-01, 7.6796454e-01, 1.1810561e-04], dtype=float32))